package com.ruoyi.system.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.ruoyi.common.core.domain.entity.InvoiceConfigDTO;
import com.ruoyi.common.core.domain.entity.SystemConfig;
import com.ruoyi.system.mapper.SystemConfigMapper;
import com.ruoyi.system.service.ISystemConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

/**
 * 系统配置服务实现
 */
@Service
public class SystemConfigServiceImpl implements ISystemConfigService {

    @Autowired
    private SystemConfigMapper systemConfigMapper;

//    @Override
//    public Optional<String> getValue(String name) {
//        LambdaQueryWrapper<SystemConfig> queryWrapper = new LambdaQueryWrapper<>();
//        queryWrapper.eq(SystemConfig::getName, name)
//                .eq(SystemConfig::getStatus, 1); // 只查询启用的配置
//
//        SystemConfig config = systemConfigMapper.selectOne(queryWrapper);
//        return Optional.ofNullable(config).map(SystemConfig::getValue);
//    }

    @Override
    public String getValue(String name) {
        // 如果 Mapper 返回 String 类型
        String value = systemConfigMapper.selectConfigByName(name);
        return value;
    }


    @Override
    public List<SystemConfig> getListByFormId(Integer formId) {
        LambdaQueryWrapper<SystemConfig> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SystemConfig::getFormId, formId)
                .eq(SystemConfig::getStatus, 1);

        return systemConfigMapper.selectList(queryWrapper);
    }


    /**
     * 根据formId查询数据
     *
     * @param formName Integer id
     * @return HashMap<String, String>
     */
    @Override
    public HashMap<String, String> info(String formName) {
        // 参数校验
        if (formName == null) {
            throw new IllegalArgumentException("表单名称不能为空");
        }

        // 查询配置数据
        List<SystemConfig> configList = systemConfigMapper.selectListByFormName(formName);

        // 使用HashMap存储结果
        HashMap<String, String> resultMap = new HashMap<>();
        // 固定字段
//        resultMap.put("form_name", String.valueOf(formName));

        // 转换配置项
        if (CollectionUtils.isNotEmpty(configList)) {
            for (SystemConfig config : configList) {
                // 处理可能的空值
                resultMap.put(
                        config.getName(),
                        config.getValue() != null ? config.getValue() : ""
                );
            }
        }

        return resultMap;
    }

    @Override
    public int updateForm(InvoiceConfigDTO dto) {
        return systemConfigMapper.updateForm(dto);
    }

}
